<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>poccNote</title><link href='https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; --title-bar-height:20px; }
.mac-os-11 { --title-bar-height:28px; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 36px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
.typora-export .task-list-item input { pointer-events: none; }
@media screen and (max-width: 500px) {
  body.typora-export { padding-left: 0px; padding-right: 0px; }
  #write { padding-left: 20px; padding-right: 20px; }
  .CodeMirror-sizer { margin-left: 0px !important; }
  .CodeMirror-gutters { display: none !important; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; image-orientation: from-image; }
button, input, select, textarea { color: inherit; font: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px; }
tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right: 0px; background-color: inherit; }
.CodeMirror-linenumber { user-select: none; }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li blockquote { margin: 1rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print {
  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }
  #write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
  .typora-export * { -webkit-print-color-adjust: exact; }
  .typora-export #write { break-after: avoid; }
  .typora-export #write::after { height: 0px; }
  .is-mac table { break-inside: avoid; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
#write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
.MathJax_ref { fill: currentcolor; }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) {
  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
  .md-toc-h4 .md-toc-inner { margin-left: 5em; }
  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
  .md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }
code { text-align: left; vertical-align: initial; }
a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
.md-inline-math .MathJax_SVG .noError { display: none !important; }
.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }
.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }
.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }
.MathJax_SVG .MJX-monospace { font-family: var(--monospace); }
.MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }
.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }
.MathJax_SVG * { transition: none 0s ease 0s; }
.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
mark .md-meta { color: rgb(0, 0, 0); opacity: 0.3 !important; }
@media print {
  .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 { break-inside: avoid; }
}
.md-diagram-panel .messageText { stroke: none !important; }
.md-diagram-panel .start-state { fill: var(--node-fill); }
.md-diagram-panel .edgeLabel rect { opacity: 1 !important; }
.md-require-zoom-fix foreignobject { font-size: var(--mermaid-font-zoom); }


:root {
    --side-bar-bg-color: #fafafa;
    --control-text-color: #777;
}

@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);

/* open-sans-regular - latin-ext_latin */
  /* open-sans-italic - latin-ext_latin */
    /* open-sans-700 - latin-ext_latin */
    /* open-sans-700italic - latin-ext_latin */
  html {
    font-size: 16px;
}

body {
    font-family: "Open Sans","Clear Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
    color: rgb(51, 51, 51);
    line-height: 1.6;
}

#write {
    max-width: 860px;
  	margin: 0 auto;
  	padding: 30px;
    padding-bottom: 100px;
}

@media only screen and (min-width: 1400px) {
	#write {
		max-width: 1024px;
	}
}

@media only screen and (min-width: 1800px) {
	#write {
		max-width: 1200px;
	}
}

#write > ul:first-child,
#write > ol:first-child{
    margin-top: 30px;
}

a {
    color: #4183C4;
}
h1,
h2,
h3,
h4,
h5,
h6 {
    position: relative;
    margin-top: 1rem;
    margin-bottom: 1rem;
    font-weight: bold;
    line-height: 1.4;
    cursor: text;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
    text-decoration: none;
}
h1 tt,
h1 code {
    font-size: inherit;
}
h2 tt,
h2 code {
    font-size: inherit;
}
h3 tt,
h3 code {
    font-size: inherit;
}
h4 tt,
h4 code {
    font-size: inherit;
}
h5 tt,
h5 code {
    font-size: inherit;
}
h6 tt,
h6 code {
    font-size: inherit;
}
h1 {
    font-size: 2.25em;
    line-height: 1.2;
    border-bottom: 1px solid #eee;
}
h2 {
    font-size: 1.75em;
    line-height: 1.225;
    border-bottom: 1px solid #eee;
}

/*@media print {
    .typora-export h1,
    .typora-export h2 {
        border-bottom: none;
        padding-bottom: initial;
    }

    .typora-export h1::after,
    .typora-export h2::after {
        content: "";
        display: block;
        height: 100px;
        margin-top: -96px;
        border-top: 1px solid #eee;
    }
}*/

h3 {
    font-size: 1.5em;
    line-height: 1.43;
}
h4 {
    font-size: 1.25em;
}
h5 {
    font-size: 1em;
}
h6 {
   font-size: 1em;
    color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table{
    margin: 0.8em 0;
}
li>ol,
li>ul {
    margin: 0 0;
}
hr {
    height: 2px;
    padding: 0;
    margin: 16px 0;
    background-color: #e7e7e7;
    border: 0 none;
    overflow: hidden;
    box-sizing: content-box;
}

li p.first {
    display: inline-block;
}
ul,
ol {
    padding-left: 30px;
}
ul:first-child,
ol:first-child {
    margin-top: 0;
}
ul:last-child,
ol:last-child {
    margin-bottom: 0;
}
blockquote {
    border-left: 4px solid #dfe2e5;
    padding: 0 15px;
    color: #777777;
}
blockquote blockquote {
    padding-right: 0;
}
table {
    padding: 0;
    word-break: initial;
}
table tr {
    border-top: 1px solid #dfe2e5;
    margin: 0;
    padding: 0;
}
table tr:nth-child(2n),
thead {
    background-color: #f8f8f8;
}
table th {
    font-weight: bold;
    border: 1px solid #dfe2e5;
    border-bottom: 0;
    margin: 0;
    padding: 6px 13px;
}
table td {
    border: 1px solid #dfe2e5;
    margin: 0;
    padding: 6px 13px;
}
table th:first-child,
table td:first-child {
    margin-top: 0;
}
table th:last-child,
table td:last-child {
    margin-bottom: 0;
}

.CodeMirror-lines {
    padding-left: 4px;
}

.code-tooltip {
    box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
    border-top: 1px solid #eef2f2;
}

.md-fences,
code,
tt {
    border: 1px solid #e7eaed;
    background-color: #f8f8f8;
    border-radius: 3px;
    padding: 0;
    padding: 2px 4px 0px 4px;
    font-size: 0.9em;
}

code {
    background-color: #f3f4f4;
    padding: 0 2px 0 2px;
}

.md-fences {
    margin-bottom: 15px;
    margin-top: 15px;
    padding-top: 8px;
    padding-bottom: 6px;
}


.md-task-list-item > input {
  margin-left: -1.3em;
}

@media print {
    html {
        font-size: 13px;
    }
    table,
    pre {
        page-break-inside: avoid;
    }
    pre {
        word-wrap: break-word;
    }
}

.md-fences {
	background-color: #f8f8f8;
}
#write pre.md-meta-block {
	padding: 1rem;
    font-size: 85%;
    line-height: 1.45;
    background-color: #f7f7f7;
    border: 0;
    border-radius: 3px;
    color: #777777;
    margin-top: 0 !important;
}

.mathjax-block>.code-tooltip {
	bottom: .375rem;
}

.md-mathjax-midline {
    background: #fafafa;
}

#write>h3.md-focus:before{
	left: -1.5625rem;
	top: .375rem;
}
#write>h4.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
#write>h5.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
#write>h6.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
.md-image>.md-meta {
    /*border: 1px solid #ddd;*/
    border-radius: 3px;
    padding: 2px 0px 0px 4px;
    font-size: 0.9em;
    color: inherit;
}

.md-tag {
    color: #a7a7a7;
    opacity: 1;
}

.md-toc { 
    margin-top:20px;
    padding-bottom:20px;
}

.sidebar-tabs {
    border-bottom: none;
}

#typora-quick-open {
    border: 1px solid #ddd;
    background-color: #f8f8f8;
}

#typora-quick-open-item {
    background-color: #FAFAFA;
    border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
    border-style: solid;
    border-width: 1px;
}

/** focus mode */
.on-focus-mode blockquote {
    border-left-color: rgba(85, 85, 85, 0.12);
}

header, .context-menu, .megamenu-content, footer{
    font-family: "Segoe UI", "Arial", sans-serif;
}

.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state{
    visibility: visible;
}

.mac-seamless-mode #typora-sidebar {
    background-color: #fafafa;
    background-color: var(--side-bar-bg-color);
}

.md-lang {
    color: #b4654d;
}

.html-for-mac .context-menu {
    --item-hover-bg-color: #E6F0FE;
}

#md-notification .btn {
    border: 0;
}

.dropdown-menu .divider {
    border-color: #e5e5e5;
}

.ty-preferences .window-content {
    background-color: #fafafa;
}

.ty-preferences .nav-group-item.active {
    color: white;
    background: #999;
}


</style>
</head>
<body class='typora-export os-windows'>
<div id='write'  class=''><h1><a name="计算机组成原理" class="md-header-anchor"></a><span>计算机组成原理</span></h1><h2><a name="第一章计算机系统概述" class="md-header-anchor"></a><span>第一章：计算机系统概述</span></h2><h3><a name="计算机发展历史" class="md-header-anchor"></a><span>计算机发展历史</span></h3><ul><li><p><span>从第一代到第四代计算机各自的主要特点</span></p><ul><li><span>第一代采用电子管元件(非冯诺依曼体系结构)</span></li><li><span>第二代采用晶体管元件，磁芯作内存，磁鼓、磁带作外存等。</span></li><li><span>第三代采用中小规模集成电路，半导体存储器作内存，出现了微程序控制，Cache，虚拟存储器，流水线等技术。IBM 公司提出了“兼容机”的概念，DEC 公司提出了总线结构。</span></li><li><span>第四代采用大规模/超大规模集成电路，出现了微处理器，出现了共享存</span>
<span>储器，分布式存储器及大规模并行处理系统等技术</span></li><li><span>冯诺依曼结构要点，“存储程序”思想</span></li></ul></li></ul><h3><a name="计算机系统的基本组成" class="md-header-anchor"></a><span>计算机系统的基本组成</span></h3><ul><li><span>现代计算机的原型—IAS 计算机</span></li></ul><ol start='2' ><li><span>指令与数据</span></li><li><span>软件与硬件的接口界面---ISA 指令集体系结构</span></li><li><span>系统软件与应用软件的概念</span></li></ol><h3><a name="计算机系统的层次结构" class="md-header-anchor"></a><span>计算机系统的层次结构</span></h3><ul><li><p><span>现代计算机系统中从硬件、ISA，到操作系统、语言处理系统和应用程序的层次结构</span>
<span>关系。</span></p><ul><li><img src="./pocc.png" referrerpolicy="no-referrer" alt="计算机系统层次"></li></ul></li><li><p><span>最终用户、应用程序员、系统管理员、系统程序员他们分别工作的层面</span></p><ul><li><img src="./pocc_1.png" referrerpolicy="no-referrer" alt="工作层面"></li></ul></li><li><p><span>ISA 会涉及哪些内容？</span></p><ul><li><p><span>可执行的指令的集合，包括指令格式、操作种类以及每种操作对应的操作数的相应规定；</span></p></li><li><p><span>指令可以接受的操作数的类型；</span></p></li><li><p><span>操作数所能存放的寄存器组的结构，包括每个寄存器的名称、编号、长度和用途；</span></p></li><li><p><span>操作数所能存放的存储空间的大小和编址方式；</span></p></li><li><p><span>操作数在存储空间存放时按照大端还是小端方式存放；</span></p></li><li><p><span>指令获取操作数的方式，即寻址方式；</span></p></li><li><p><span>指令执行过程的控制方式，包括程序计数器、条件码定义等。</span></p></li><li><p><span>ISA在计算机系统中是必不可少的一个抽象层</span></p><ul><li><span>没有它，软件无法使用计算机硬件！</span></li><li><span>没有它，一台计算机不能称为“通用计算机”</span></li></ul></li></ul></li></ul><p>&nbsp;</p><h3><a name="计算机系统性能评价" class="md-header-anchor"></a><span>计算机系统性能评价</span></h3><ul><li><span>响应时间，吞吐率，CPU 时间，MIPS，MFLOPS，基准程序（Benchmarks）</span></li><li><span>CPI 的计算</span></li><li><span>性能评价程序—基准程序（Benchmarks）</span></li></ul><h3><a name="概念" class="md-header-anchor"></a><span>概念</span></h3><ul><li><p><span>计算机是一种能对数字化信息进行自动、高速算术和逻辑运算的处理装置。</span></p></li><li><p><span>冯诺依曼体系结构</span></p><ul><li><img src="./pocc_2.png" referrerpolicy="no-referrer" alt="冯诺依曼架构"></li></ul></li><li><p><span>早期，部件之间用</span><strong><span>分散方式</span></strong><span>相连；现在，部件之间大多用</span><strong><span>总线</span></strong><span>方式相连；趋势，</span><strong><span>点对点 （分散方式）</span></strong><span>高速连接。</span></p></li><li><p><span>主要思想：</span><strong><span>“存储程序”</span></strong><span>思想。</span></p></li><li><p><span>计算机应由</span><strong><span>运算器、控制器、存储器、输入设备和输出设备</span></strong><span>五个基本部件组成</span></p></li><li><p><span>各基本部件的功能是：</span></p><ul><li><span>存储器：</span><strong><span>能存放数据和指令</span></strong><span>，二者</span><strong><span>形式上没有区别</span></strong><span>，但计算机应</span><strong><span>能区分</span></strong><span>数据还是指令</span></li><li><span>控制器：应能自动取出指令来执行。</span></li><li><span>运算器：应能进行加/减/乘/除四种基本算术运算，并且也能进行一些逻辑运算和附加运算。</span></li></ul></li><li><p><span>输入设备、输出设备：操作人员可以通过其和主机进行通信。</span></p></li><li><p><span>内部以二进制表示指令和数据。每条指令由操作码和地址码两部分组成。操作码指出操作类型，地址码指出操作数的地址。由一串指令组成程序</span></p></li><li><p><span>采用“存储程序”工作方式。</span></p></li><li><p><span>计算机性能评价：</span></p><ul><li><span>吞吐率：也称带宽，单位时间内完成的工作量。</span></li><li><span>响应时间：也称执行时间或等待时间，是指从作业提交开始到作业完成所需要的时间。</span></li></ul></li><li><p><span>不同应用场合用户关心的性能不同：</span></p><ul><li><span>要求吞吐率高的场合，例如：多媒体应用（音/视频播放要流畅）</span></li><li><span>要求响应时间短的场合：例如：事务处理系统（存/取款速度要快）。</span></li><li><span>要求吞吐率高且响应时间短的场合： ATM、文件服务器、Web 服务器等。</span></li></ul></li><li><p><span>CPU 时间：CPU 用于程序执行的时间。分为：</span></p><ul><li><span>用户 CPU 时间（真正用于运行用户程序代码的时间）</span></li><li><span>系统 CPU 时间（为了执行用户程序而需要CPU 运行操作系统程序的时间）。</span></li><li><span>其他时间：指等待 I/O 操作完成或 CPU 花在其他用户程序的时间</span></li></ul></li><li><p><span>时钟周期：CPU 主脉冲信号的宽度。</span></p></li><li><p><span>主频：CPU 中主脉冲信号的时钟频率，为时钟周期的倒数。</span></p></li><li><p><span>系统性能(System performance)：系统响应时间，与 CPU 外的其他部分也都有关系</span></p></li><li><p><span>CPU 性能(CPU performance)：用户 CPU 时间。</span></p></li><li><p><span>CPI：执行一条指令所需要的时钟周期数。</span></p></li><li><p><span>基本的性能评价标准：CPU 的执行时间。程序由指令构成，CPU 执行时间就是执行程序中每条指令的时间。</span></p></li><li><div contenteditable="false" spellcheck="false" class="mathjax-block md-end-block md-math-block md-rawblock" id="mathjax-n142" cid="n142" mdtype="math_block"><div class="md-rawblock-container md-math-container" tabindex="-1"><div class="MathJax_SVG_Display"><span class="MathJax_SVG" id="MathJax-Element-1-Frame" tabindex="-1" style="font-size: 100%; display: inline-block;"><svg xmlns:xlink="http://www.w3.org/1999/xlink" width="67.938ex" height="9.231ex" viewBox="0 -806.1 29250.9 3974.5" role="img" focusable="false" style="vertical-align: -7.359ex; max-width: 100%;"><defs><path stroke-width="0" id="E1-MJMATHI-43" d="M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z"></path><path stroke-width="0" id="E1-MJMATHI-50" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path><path stroke-width="0" id="E1-MJMATHI-55" d="M107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637Z"></path><path stroke-width="0" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path><path stroke-width="0" id="E1-MJMAIN-2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path><path stroke-width="0" id="E1-MJMAIN-D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path><path stroke-width="0" id="E1-MJMAIN-F7" d="M318 466Q318 500 339 518T386 537Q418 537 438 517T458 466Q458 438 440 417T388 396Q355 396 337 417T318 466ZM56 237T56 250T70 270H706Q721 262 721 250T706 230H70Q56 237 56 250ZM318 34Q318 68 339 86T386 105Q418 105 438 85T458 34Q458 6 440 -15T388 -36Q355 -36 337 -15T318 34Z"></path><path stroke-width="0" id="E1-MJMATHI-49" d="M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><g transform="translate(4953,0)"><use xlink:href="#E1-MJMATHI-43" x="0" y="0"></use><use xlink:href="#E1-MJMATHI-50" x="760" y="0"></use><use xlink:href="#E1-MJMATHI-55" x="1511" y="0"></use><g transform="translate(2278,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">执</text></g><g transform="translate(3060,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">行</text></g><g transform="translate(3842,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">时</text></g><g transform="translate(4624,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">间</text></g><use xlink:href="#E1-MJMAIN-3D" x="5684" y="0"></use><use xlink:href="#E1-MJMATHI-43" x="6740" y="0"></use><use xlink:href="#E1-MJMATHI-50" x="7500" y="0"></use><use xlink:href="#E1-MJMATHI-55" x="8251" y="0"></use><g transform="translate(9018,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">时</text></g><g transform="translate(9800,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">钟</text></g><g transform="translate(10582,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">周</text></g><g transform="translate(11364,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">期</text></g><g transform="translate(12146,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">数</text></g><use xlink:href="#E1-MJMAIN-2F" x="12928" y="0"></use><g transform="translate(13428,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">程</text></g><g transform="translate(14211,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">序</text></g><use xlink:href="#E1-MJMAIN-D7" x="15215" y="0"></use><g transform="translate(16215,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">时</text></g><g transform="translate(16997,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">钟</text></g><g transform="translate(17780,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">周</text></g><g transform="translate(18562,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">期</text></g></g><g transform="translate(7795,-1431)"><use xlink:href="#E1-MJMAIN-3D" x="0" y="0"></use><use xlink:href="#E1-MJMATHI-43" x="1055" y="0"></use><use xlink:href="#E1-MJMATHI-50" x="1815" y="0"></use><use xlink:href="#E1-MJMATHI-55" x="2566" y="0"></use><g transform="translate(3333,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">时</text></g><g transform="translate(4115,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">钟</text></g><g transform="translate(4898,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">周</text></g><g transform="translate(5680,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">期</text></g><g transform="translate(6462,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">数</text></g><use xlink:href="#E1-MJMAIN-2F" x="7244" y="0"></use><g transform="translate(7744,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">程</text></g><g transform="translate(8526,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">序</text></g><use xlink:href="#E1-MJMAIN-F7" x="9531" y="0"></use><g transform="translate(10531,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">时</text></g><g transform="translate(11313,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">钟</text></g><g transform="translate(12095,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">频</text></g><g transform="translate(12877,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">率</text></g></g><g transform="translate(7706,-2862)"><use xlink:href="#E1-MJMAIN-3D" x="0" y="0"></use><g transform="translate(1055,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">指</text></g><g transform="translate(1837,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">令</text></g><g transform="translate(2620,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">条</text></g><g transform="translate(3402,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">数</text></g><use xlink:href="#E1-MJMAIN-2F" x="4184" y="0"></use><g transform="translate(4684,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">程</text></g><g transform="translate(5466,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">序</text></g><use xlink:href="#E1-MJMAIN-D7" x="6470" y="0"></use><use xlink:href="#E1-MJMATHI-43" x="7471" y="0"></use><use xlink:href="#E1-MJMATHI-50" x="8231" y="0"></use><use xlink:href="#E1-MJMATHI-49" x="8982" y="0"></use><use xlink:href="#E1-MJMAIN-D7" x="9708" y="0"></use><g transform="translate(10708,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">时</text></g><g transform="translate(11490,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">钟</text></g><g transform="translate(12272,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">周</text></g><g transform="translate(13055,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">期</text></g></g></g></svg></span></div><script type="math/tex; mode=display" id="MathJax-Element-1">CPU 执行时间 = CPU 时钟周期数 / 程序 × 时钟周期\\
= CPU 时钟周期数 / 程序 ÷ 时钟频率\\
= 指令条数 / 程序 × CPI × 时钟周期</script></div></div></li><li><div contenteditable="false" spellcheck="false" class="mathjax-block md-end-block md-math-block md-rawblock" id="mathjax-n144" cid="n144" mdtype="math_block"><div class="md-rawblock-container md-math-container" tabindex="-1"><div class="MathJax_SVG_Display" style="text-align: center;"><span class="MathJax_SVG" id="MathJax-Element-2-Frame" tabindex="-1" style="font-size: 100%; display: inline-block;"><svg xmlns:xlink="http://www.w3.org/1999/xlink" width="41.846ex" height="2.577ex" viewBox="0 -806.1 18017.1 1109.7" role="img" focusable="false" style="vertical-align: -0.705ex; max-width: 100%;"><defs><path stroke-width="0" id="E5-MJMATHI-43" d="M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z"></path><path stroke-width="0" id="E5-MJMATHI-50" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path><path stroke-width="0" id="E5-MJMATHI-55" d="M107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637Z"></path><path stroke-width="0" id="E5-MJMAIN-2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path><path stroke-width="0" id="E5-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path><path stroke-width="0" id="E5-MJMAIN-D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path><path stroke-width="0" id="E5-MJMATHI-49" d="M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><use xlink:href="#E5-MJMATHI-43" x="0" y="0"></use><use xlink:href="#E5-MJMATHI-50" x="760" y="0"></use><use xlink:href="#E5-MJMATHI-55" x="1511" y="0"></use><g transform="translate(2278,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">时</text></g><g transform="translate(3060,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">钟</text></g><g transform="translate(3842,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">周</text></g><g transform="translate(4624,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">期</text></g><g transform="translate(5406,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">数</text></g><use xlink:href="#E5-MJMAIN-2F" x="6188" y="0"></use><g transform="translate(6688,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">程</text></g><g transform="translate(7470,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">序</text></g><use xlink:href="#E5-MJMAIN-3D" x="8530" y="0"></use><g transform="translate(9586,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">指</text></g><g transform="translate(10368,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">令</text></g><g transform="translate(11150,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">条</text></g><g transform="translate(11933,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">数</text></g><use xlink:href="#E5-MJMAIN-2F" x="12715" y="0"></use><g transform="translate(13215,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">程</text></g><g transform="translate(13997,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">序</text></g><use xlink:href="#E5-MJMAIN-D7" x="15001" y="0"></use><use xlink:href="#E5-MJMATHI-43" x="16002" y="0"></use><use xlink:href="#E5-MJMATHI-50" x="16762" y="0"></use><use xlink:href="#E5-MJMATHI-49" x="17513" y="0"></use></g></svg></span></div><script type="math/tex; mode=display" id="MathJax-Element-2">CPU 时钟周期数 / 程序 = 指令条数 / 程序 × CPI</script></div></div></li><li><div contenteditable="false" spellcheck="false" class="mathjax-block md-end-block md-math-block md-rawblock" id="mathjax-n146" cid="n146" mdtype="math_block"><div class="md-rawblock-container md-math-container" tabindex="-1"><div class="MathJax_SVG_Display" style="text-align: center;"><span class="MathJax_SVG" id="MathJax-Element-3-Frame" tabindex="-1" style="font-size: 100%; display: inline-block;"><svg xmlns:xlink="http://www.w3.org/1999/xlink" width="41.846ex" height="2.577ex" viewBox="0 -806.1 18017.1 1109.7" role="img" focusable="false" style="vertical-align: -0.705ex; max-width: 100%;"><defs><path stroke-width="0" id="E6-MJMATHI-43" d="M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z"></path><path stroke-width="0" id="E6-MJMATHI-50" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path><path stroke-width="0" id="E6-MJMATHI-49" d="M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z"></path><path stroke-width="0" id="E6-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path><path stroke-width="0" id="E6-MJMATHI-55" d="M107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637Z"></path><path stroke-width="0" id="E6-MJMAIN-2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path><path stroke-width="0" id="E6-MJMAIN-F7" d="M318 466Q318 500 339 518T386 537Q418 537 438 517T458 466Q458 438 440 417T388 396Q355 396 337 417T318 466ZM56 237T56 250T70 270H706Q721 262 721 250T706 230H70Q56 237 56 250ZM318 34Q318 68 339 86T386 105Q418 105 438 85T458 34Q458 6 440 -15T388 -36Q355 -36 337 -15T318 34Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><use xlink:href="#E6-MJMATHI-43" x="0" y="0"></use><use xlink:href="#E6-MJMATHI-50" x="760" y="0"></use><use xlink:href="#E6-MJMATHI-49" x="1511" y="0"></use><use xlink:href="#E6-MJMAIN-3D" x="2292" y="0"></use><use xlink:href="#E6-MJMATHI-43" x="3348" y="0"></use><use xlink:href="#E6-MJMATHI-50" x="4108" y="0"></use><use xlink:href="#E6-MJMATHI-55" x="4859" y="0"></use><g transform="translate(5626,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">时</text></g><g transform="translate(6408,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">钟</text></g><g transform="translate(7190,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">周</text></g><g transform="translate(7973,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">期</text></g><g transform="translate(8755,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">数</text></g><use xlink:href="#E6-MJMAIN-2F" x="9537" y="0"></use><g transform="translate(10037,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">程</text></g><g transform="translate(10819,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">序</text></g><use xlink:href="#E6-MJMAIN-F7" x="11823" y="0"></use><g transform="translate(12824,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">指</text></g><g transform="translate(13606,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">令</text></g><g transform="translate(14388,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">条</text></g><g transform="translate(15170,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">数</text></g><use xlink:href="#E6-MJMAIN-2F" x="15952" y="0"></use><g transform="translate(16452,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">程</text></g><g transform="translate(17234,0)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(50.259) matrix(1 0 0 -1 0 0)">序</text></g></g></svg></span></div><script type="math/tex; mode=display" id="MathJax-Element-3">CPI = CPU 时钟周期数 / 程序 ÷指令条数 / 程序</script></div></div></li><li><p><span>MIPS：平均每秒执行多少百万条指令。（平均值，结果不可靠）</span></p></li><li><p><span>峰值 MIPS：一组平均 CPI 最小的指令组合得到的 MIPS</span></p></li><li><p><span>相对 MIPS：由某公认的参考机型定义的 MIPS。（表现为参考机型的多少倍）</span></p></li><li><p><span>MFLOPS：每秒执行的浮点运算有多少百万次。（GFLOPS：10^9； TFLOPS：10^12。）</span></p></li><li><p><span>基准程序：专门用来进行性能评价的一组程序。（基准程序通过运行实际负载来反映计算机的性能）</span></p></li><li><p><span>执行时间的归一化值=参考机器上的执行时间÷被测机器上执行时间</span></p></li><li><p><span>SPEC 基准程序集：应用最广泛且最全面的性能评测基准程序集。</span></p></li><li><p><span>SPEC 比值：将测试程序在 Sun SPARCsatation上运行时间的执行时间除以该程序在测试机器上执行时间得到的比值。（比值越大，机器性能越好）</span></p></li><li><p><span>综合性能评价的方法可用以下两种平均值来评价：</span></p><ul><li><span>Arithmetic mean(算术平均)：求和后除 n（能得到总平均执行时间</span></li><li><span>Geometric mean(几何平均)：求积后开根号 n（平均规格化执行时间使用）。</span></li></ul></li></ul><h3><a name="名词解释" class="md-header-anchor"></a><span>名词解释</span></h3><ul><li><p><span>系列机：又相同的或相似的指令集，相同或相似的操作系统的计算机</span></p></li><li><p><span>兼容：相同的或相似的指令集，相同或相似的操作系统</span></p></li><li><p><span>中央处理器 CPU：</span></p><ul><li><p><span>整个计算机的核心部件，主要用于指令的执行。（包括数据通路和控制器）</span></p><ul><li><span>数据通路：包含算术逻辑部件和通用寄存器等，用于执行算术和逻辑运算等操作</span></li><li><span>控制器：用于对指令译码，生成相应控制信号，以控制数据通路进行正确操作。</span></li></ul></li></ul></li></ul><p>&nbsp;</p><h2><a name="数据的机器级表示" class="md-header-anchor"></a><span>数据的机器级表示</span></h2><p>&nbsp;</p><h3><a name="数值数据的表示" class="md-header-anchor"></a><span>数值数据的表示</span></h3><ul><li><p><span>定点数的表示</span></p><ul><li><p><span>二进制原码、补码的表示必须搞清楚；</span></p><ul><li><span>移码表示：标准移码的偏置常数 2n-1，它与补码的关系：最高位相反，其余位相同。</span></li></ul></li><li><p><span>无符号数表示和带符号数表示进行数据长度扩展时的差异。</span></p></li></ul></li><li><p><span>浮点数表示 IEEE754 标准</span></p><ul><li><p><span>单精度 32 位和双精度 64 位的格式；偏置常数的取值。</span></p></li><li><p><span>规格化数的阶码取值范围；规格化尾数的表示（隐含位 1）；</span></p><ul><li><span>IEEE754 浮点数几个特殊数据的表示形式：0、∞、NaN(非数)、非规格化数</span></li><li><img src="./pocc_3.png" referrerpolicy="no-referrer" alt="ieee754-d"></li><li><img src="./pocc_4.png" referrerpolicy="no-referrer" alt="d-ieee754"></li></ul></li></ul></li><li><p><span>用 ASCII 码表示十进制数：前分隔数字串和后嵌入数字串两种格式表示正负号；</span></p></li><li><p><span>用 BCD 码表示十进制数：正负数的表示方法（“+”：1100 ；“-”：1101），位数不等于8Bit的整数倍时需补 0</span></p></li></ul><p>&nbsp;</p><h3><a name="非数值数据的表示" class="md-header-anchor"></a><span>非数值数据的表示</span></h3><ul><li><p><span>汉字的编码：输入码、内码、字模点阵码，它们分别由哪些常用编码：</span></p><ul><li><span>西文字符的编码表示</span></li><li><span>汉字及国际字符的编码表示</span></li><li><span>汉字的输入码</span></li><li><span>汉字内码</span></li><li><span>国际字符集</span></li><li><span>汉字的字模点阵码和轮廓描述</span></li></ul></li></ul><h3><a name="数据的存储和排列顺序" class="md-header-anchor"></a><span>数据的存储和排列顺序</span></h3><ul><li><p><span>大端</span></p><ul><li><span>内存：lsb存放数据高位</span></li></ul></li><li><p><span>小端</span></p><ul><li><span>内存：msb存放数据高位</span></li></ul></li></ul><p>&nbsp;</p><h3><a name="数据的纠错与检错" class="md-header-anchor"></a><span>数据的纠错与检错</span></h3><ul><li><p><span>采用“冗余校验”思想，即除原数据信息外，还增加若干位编码，这些新增的代码被称为校验位。（即增加冗余项，目的是增大码距）</span></p><ul><li><span>码距：同一编码中，任意两个合法编码之间不同的二进制位数的最小值</span></li></ul></li><li><p><span>奇偶校验码：在原有的数据后外加一位奇偶校验位。分为奇校验（原数据有奇数个 1 则添 0，否则添 1）和偶校验（原数据有偶数个 1 则添 0，否则添 1）</span></p></li><li><p><span>奇偶校验的特点：</span></p><ul><li><span>编码与检错简单，编码效率高。</span></li><li><span>是一种错误检测码，无错结论不可靠。（检错一定错；无错不一定对）</span></li><li><span>只能发现奇数位出错，不能发现偶数位出错。</span></li><li><span>不能确定发生错误的位置，不具有纠错能力。</span></li><li><span>码距为 2，开销小，适用于校验一字节长的代码</span></li></ul></li><li><p><span>海明校验码是分组的奇偶校验码。</span></p></li><li><p><span>在机器内部编码后的数称为机器数，其值称为真值。</span></p></li></ul><p>&nbsp;</p><h2><a name="运算方法和运算部件" class="md-header-anchor"></a><span>运算方法和运算部件</span></h2><p>&nbsp;</p><h3><a name="串行进位加法器与并行进位加法器" class="md-header-anchor"></a><span>串行进位加法器与并行进位加法器</span></h3><ul><li><p><span>并行进位加法器比串行进位加法器速度快的原因</span></p><ul><li><strong><span>进位按串行方式传递，速度慢</span></strong><span>,一次运算只能得到一位结果</span></li><li><span>一次计算多位，速度快</span></li><li><span>串行仅为加法器采用串行逐级传递进位，电路延迟与位数成正比关系</span></li></ul></li><li><p><span>全先行进位加法器、局部先行进位加法器和多级先行进位加法器的区别</span></p><ul><li><span>全先行进位加法器：所有位各级的进位彼此是独立产生</span></li><li><span>局部先行进位加法器：单级先行进位加法器，全先行进位加法器延迟小，单位数较长时，成本太高。较好的实现方法时用多个位数较少的n位全先行进位加法器进行串联；单级（局部）先行进位加法器的进位生成方式：组内并行、组间串行，虽然比行波加法器延迟时间段，但高位组进位依赖低位组进位，故由较长的时间延迟。</span></li><li><span>多级先行进位加法器：通过引入组进位生成/传递函数实现“组内并行、组间并行”</span></li></ul></li></ul><h3><a name="alu-的构成" class="md-header-anchor"></a><span>ALU 的构成</span></h3><ul><li><p><span>整数加减运算器的基本构成（关键:如何实现减法运算）</span></p><ul><li><span>核心部件是加法器，由多路选择器和各种逻辑元件组成</span></li></ul></li><li><p><span>ALU 如何控制实现加、减、与、或等等各种功能</span></p><ul><li><span>通过MUX可以实现与、或和加的操作，其他操作也可以通过增加逻辑电路来实现，比如说减法就是加上被减数的补码</span></li></ul></li><li><p><span>ALU 的 OF、SF、CF 和 ZF 等标志信息如何产生</span></p><ul><li><p><span>ZF：零标志位，alu运算得到0时，该位被置1</span></p></li><li><p><span>OF：溢出标志位，运算上溢和下溢都会触发</span></p></li><li><p><span>SF：符号标志位总是取Fn-1位作为输出</span></p></li><li><p><span>CF：进/借位标志：</span></p><ul><li><span>最高位产生进位则无借位（cf=0），表示够减，结果为正</span></li><li><span>最高位无进位则CF=1，结果为负，他是“差”的数值位的不嘛形式，需要对结果求补，还原为源码形式的数值位</span></li></ul></li><li><p><span>所有运算电路的核心：</span></p><ul><li><span>计算机中所有算术运算都基于加法器实现</span></li><li><span>加法器本身不知道所运算的时带符号数还是无符号数</span></li><li><span>加法器不判定对错，总是取低n位作为结果，并生成标志信息</span></li></ul></li></ul></li><li><p><span>如何判断无符号数和带符号数加减运算时发生溢出</span></p><ul><li><p><span>增加一个溢出判断逻辑电路：</span></p><ul><li><span>OF=Xn-1Yn-1Fn-1+X&#39;n-1Y&#39;n-1F&#39;n-1</span></li></ul></li></ul></li></ul><h3><a name="定点数的加减乘法运算方法" class="md-header-anchor"></a><span>定点数的加减乘法运算方法</span></h3><ul><li><p><span>补码、原码、移码的加减运算方法</span></p><ul><li><span>源码加减法：正常运算，负数可以转换成对应补码进行加运算，也可以直接运算。</span></li><li><span>（其他码的运算可以先转换成原码再计算；乘法正常运算；除法基本相同，但是是异或操作非和操作）</span></li><li><span>移码加减法：移码的和、差等于和、差的补码（补码和移码符号位相反、数值位相同）</span></li><li><span>如果两个加数的符号相同，并且与和数的符号也相同，则发生溢出。</span></li></ul></li></ul><h3><a name="浮点数运算" class="md-header-anchor"></a><span>浮点数运算</span></h3><ul><li><p><span>假定：Mx、My分别是X和Y的尾数，  Ex和Ey 分别是X和Y的阶码 </span></p><ul><li><p><span>求阶差：∆E=Ey – Ex  (假定Ey &gt; Ex，则结果的阶码为Ey)</span></p></li><li><p><span>对阶：将Mx右移∆E位，尾数变为 Mx*2Ex-Ey（保留右移部分：附加位）</span></p></li><li><p><span>尾数加减： Mx*2Ex-Ey ± My</span><strong><span>注意：需要让隐含的“1”参加运算</span></strong></p></li><li><p><span>规格化：</span></p></li><li><p><span>尾数高位(个位)为0，则需左规:尾数左移一次，阶码减1，直到MSB为1</span></p><ul><li><span>每次阶码减1后要判断阶码是否下溢</span></li></ul></li><li><p><span>当尾数最高位有进位，需右规：尾数右移一位，阶码加1，直到MSB为1</span></p><ul><li><span>每次阶码加1后要判断阶码是否上溢</span></li></ul></li><li><p><span>阶码溢出异常处理：阶码上溢，则结果溢出；阶码下溢，则结果为0</span></p></li><li><p><span>如果尾数比规定位数长，则需考虑舍入（有多种舍入方式）</span></p></li><li><p><span>若运算结果尾数是0，则需要将阶码也置0</span></p></li><li><p><span>尾数为0说明结果应该为0（阶码和尾数为全0）</span></p></li></ul></li><li><p><span>计算机内部执行浮点数加减运算须解决的问题</span></p><ul><li><p><span>用IEEE754标准表示</span></p></li><li><p><span>求</span><span class="MathJax_SVG" tabindex="-1" style="font-size: 100%; display: inline-block;"><svg xmlns:xlink="http://www.w3.org/1999/xlink" width="6.517ex" height="2.577ex" viewBox="0 -806.1 2806.1 1109.7" role="img" focusable="false" style="vertical-align: -0.705ex;"><defs><path stroke-width="0" id="E4-MJMAIN-5B" d="M118 -250V750H255V710H158V-210H255V-250H118Z"></path><path stroke-width="0" id="E4-MJMAIN-394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path><path stroke-width="0" id="E4-MJMATHI-45" d="M492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213Z"></path><path stroke-width="0" id="E4-MJMAIN-5D" d="M22 710V750H159V-250H22V-210H119V710H22Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><use xlink:href="#E4-MJMAIN-5B" x="0" y="0"></use><use xlink:href="#E4-MJMAIN-394" x="278" y="0"></use><use xlink:href="#E4-MJMATHI-45" x="1111" y="0"></use><g transform="translate(1875,0)"><use xlink:href="#E4-MJMAIN-5D" x="0" y="0"></use><g transform="translate(278,-150)"><text font-family="STIXGeneral, 'PingFang SC', serif" stroke="none" transform="scale(35.539) matrix(1 0 0 -1 0 0)">补</text></g></g></g></svg></span><script type="math/tex">[\Delta E]_补</script><span>补判断两阶码的大小</span></p></li><li><p><span>对阶时尾数右移隐含位1如何处理</span></p><ul><li><span>右移到数值部分，高位补0，低位部分移出到附加位，附加位包括保护位、舍入位和粘位，共3位</span></li></ul></li><li><p><span>如何进行尾数加减？</span></p><ul><li><span>隐藏位还原后，按原码进行加减运算，附加位一起运算</span></li></ul></li><li><p><span>何时需要规格化，如何规格化</span></p><ul><li><p><span>±1x .xx……x 形式时，则右规: 尾数右移1位, 阶码加1 </span></p></li><li><p><span>问题：右规时最多只需移几位？</span></p><ul><li><span>只需移1位</span></li></ul></li><li><p><span>± 0.0…01x…x 形式时，则左规: 尾数左移k位, 阶码减k</span></p></li></ul></li><li><p><span>如何舍入？</span></p><ul><li><span>最终须把附加位去掉，此时需考虑舍入</span></li></ul></li><li><p><span>如何判断溢出？</span></p><ul><li><span>若阶码为全1，则上溢；若尾数为全0，则下溢;阶码小于最小负数时也为下溢</span></li></ul></li></ul></li></ul><h3><a name="概念-n427" class="md-header-anchor"></a><span>概念</span></h3><ul><li><p><span>ALU:算术逻辑部件（所有运算电路的核心）</span></p><ul><li><img src="./pocc_5.png" referrerpolicy="no-referrer" alt="alu标志位"></li></ul></li><li><p><span>各个标志位求法:</span></p><ul><li><img src="./pocc_6.png" referrerpolicy="no-referrer" alt="标志位"></li><li><span>（符号位正 0 负 1；进位标志判断符号位有无进位）</span></li><li><span>条件标志（Flag）在运算电路中产生，被记录到专门的寄存器中。</span></li></ul></li><li><p><span>三个重要认识：</span></p><ul><li><span>计算机中所有算术运算都基于加法器实现！</span></li><li><span>加法器不知道所运算的是带符号数还是无符号数。</span></li><li><span>加法器不判定对错，总是取低 n 位作为结果，并生成标志信息。</span></li></ul></li><li><p><span>加法溢出判断：无符号加溢出条件：CF=1；带符号加溢出条件：OF=1。</span></p><ul><li><p><img src="./pocc_7.png" referrerpolicy="no-referrer" alt="加公式"></p></li><li><p><span>（正溢出：CF=0, ZF=0, OF=1, SF=1；负溢出：CF=1, ZF=0, OF=1, SF=0。）</span></p></li><li><p><span>减法溢出判断：带符号溢出：</span></p><ul><li><span>(1) 最高位和次高位的进位不同</span></li><li><span>(2) 和的符号位和加数的符号位不同；无符号减溢出：差为负数，即借位CF=1。</span></li><li><img src="./pocc_8.png" referrerpolicy="no-referrer" alt="减公式"></li><li><span>做减法以比较大小，规则：Unsigned: CF=0 时，大于；Signed：OF=SF 时，大于。</span></li></ul></li><li><p><span>移位运算：</span></p><ul><li><span>逻辑移位：对无符号数进行，左（右）边补0，低（高）位移出。</span></li><li><span>算术移位：对带符号整数进行，移位前后符号位不变，编码不同，方式不同。</span></li><li><span>循环移位：最左（右）边位移到最低（高）位，其他位左（右）移一位。</span></li><li><span>扩展运算：零扩展：对无符号整数进行高位补 0；符号扩展：对补码整数在高位直接补符。</span></li></ul></li><li><p><span>浮点数加减法规则：（相当于还原后再加减）</span></p><ul><li><img src="./pocc_9.png" referrerpolicy="no-referrer" alt="法则"></li></ul></li><li><p><span>对阶：使 x 和 y 阶码相等，以使尾数可以相加减。</span></p></li></ul></li></ul><p>&nbsp;</p><h2><a name="指令系统" class="md-header-anchor"></a><span>指令系统</span></h2><h3><a name="指令系统设计" class="md-header-anchor"></a><span>指令系统设计</span></h3><ul><li><p><span>一条指令必须明显或隐含包含以下信息：</span></p><ul><li><p><span>条件码：指定操作类型</span></p><ul><li><span>操作码长度：固定/可变</span></li></ul></li><li><p><span>源操作数或其地址：一个或多个源操作数所在的地址</span></p><ul><li><span>操作数来源：主（虚）存/寄存器/I/O端口/指令本身</span></li></ul></li><li><p><span>结果的地址：产生的结果存放何处（目的操作数）</span></p><ul><li><span>结果地址：主（虚）存/寄存器/I/O端口</span></li></ul></li><li><p><span>下一条指令地址：下条指令存放何处</span></p><ul><li><span>下条指令地址：主（虚）存的地址</span></li><li><span>正常情况隐含在PC中，改变顺序时由指令给出</span></li></ul></li></ul></li><li><p><span>指令类型</span></p><ul><li><p><span>零地址指令：</span></p><ul><li><span>无需操作数：空操作/停机</span></li><li><span>所需操作数位默认位置：堆栈/累加器</span></li><li><span>形式：OP</span></li></ul></li><li><p><span>一地址指令：</span></p><ul><li><span>其地址既是操作数的地址，也是结果的地址</span></li><li><span>单目运算：如：取反/取负等</span></li><li><span>双目运算：另一操作数位默认的：累加器</span></li><li><span>形式：OP+A1</span></li></ul></li><li><p><span>二地址指令（CISC常用）</span></p><ul><li><span>分别存放双目运算中两个操作数，并将其中一个地址作为结果的地址</span></li><li><span>形式：OP+A1+A2</span></li></ul></li><li><p><span>三地址指令（RISC风格）</span></p><ul><li><span>分别作为双目运算中两个源操作数的地址和一个结果的地址</span></li><li><span>形式：OP+A1+A2+A3</span></li></ul></li><li><p><span>多地址指令</span></p><ul><li><span>用于成批数据处理的指令：向量/矩阵运算的SIMD指令</span></li></ul></li></ul></li></ul><h3><a name="明白指令格式设计的几个基本原则" class="md-header-anchor"></a><span>明白指令格式设计的几个基本原则</span></h3><ul><li><span>指令应该尽量短</span></li><li><span>要有足够的操作码位数</span></li><li><span>操作码编码必须有位移的解释，否则是不合法的指令</span></li><li><span>指令长度是字节的整数倍</span></li><li><span>合理选择地址字段的个数</span></li><li><span>指令尽量规整</span></li></ul><p>&nbsp;</p><p>&nbsp;</p><h3><a name="一般计算机中8种基本寻址方式产生操作数的过程" class="md-header-anchor"></a><span>一般计算机中8种基本寻址方式产生操作数的过程</span></h3><ul><li><p><span>假设：</span></p><ul><li><p><span>A:地址字段值，R：寄存器编号</span></p></li><li><p><span>EA：有效地址，(X)：X中的内容</span></p></li><li><p><span>OP+R+A+...</span></p></li><li><figure><table><thead><tr><th><span>寻址方式</span></th><th><span>算法</span></th><th><span>主要优点</span></th><th><span>主要缺点</span></th></tr></thead><tbody><tr><td><span>立即方式</span></td><td><span>操作数=A</span></td><td><span>指令执行速度快</span></td><td><span>操作数幅值有限</span></td></tr><tr><td><span>直接方式</span></td><td><span>EA=A</span></td><td><span>有效地址计算简单</span></td><td><span>地址范围有限</span></td></tr><tr><td><span>间接方式</span></td><td><span>EA=(A)</span></td><td><span>有效地址范围大</span></td><td><span>多次存储器访问</span></td></tr><tr><td><span>寄存器方式</span></td><td><span>操作数=(R)</span></td><td><span>指令执行快，指令段</span></td><td><span>寄存器数量有限</span></td></tr><tr><td><span>寄存器间接方式</span></td><td><span>EA=(R)</span></td><td><span>地址范围大</span></td><td><span>额外存储器访问</span></td></tr><tr><td><span>偏移方式</span></td><td><span>EA=A+(R)</span></td><td><span>灵活</span></td><td><span>复杂</span></td></tr><tr><td><span>堆栈方式</span></td><td><span>EA=栈顶</span></td><td><span>指令短</span></td><td><span>应用有限</span></td></tr></tbody></table></figure></li><li><p><span>其中：偏移方式是将直接方式和寄存器间接方式相结合的方式</span></p><ul><li><span>分为：相对/基址/变址三种</span></li></ul></li><li><p><span>偏移方式</span></p><ul><li><span>相对寻址：EA=A+(PC)相对于当前指令出位移量位A的单元</span></li><li><span>基址寻址：EA=A+(B)相对于基址B处位移量位A的单元</span></li><li><span>变址寻址：EA=A+(I)相对于首地址A出偏移量位(I)的单元</span></li></ul></li></ul></li><li><p><span>寻址方式</span></p><ul><li><p><span>立即寻址</span></p><ul><li><span>MOV AX，200H</span></li><li><span>直接给出操作数本身，相当于操作数的值，立即数</span></li><li><span>（指令通过 PC 去指令存储器中提取出，放入到指令寄存器中执行）</span></li></ul></li><li><p><span>直接寻址</span></p><ul><li><span>MOV AX, [2000H]</span></li><li><span>给出操作数的地址，相当于 2000H 地址中的内容是操作数</span></li><li><span>（在存储器中找到对应位置取出）</span></li></ul></li><li><p><span>间接寻址</span></p><ul><li><span>地址码字段 D 给出的不是操作数的真正地址，而是操作数地址的指示器，或者说 D 单元的内容才是操作数的有效地址。（存储器中取出）</span></li></ul></li><li><p><span>寄存器寻址</span></p><ul><li><span>其地址码就是寄存器编号，也就是操作数在寄存器中</span></li></ul></li><li><p><span>寄存器间接寻址</span></p><ul><li><p><span>MOV AX, [BX]</span></p></li><li><p><span>地址码是一个寄存器编号，该寄存器中存放的是操作数的有效地址，存储器中取出</span></p></li><li><p><span>偏移方式</span></p><ul><li><span>将直接方式和寄存器间接方式相结合的方式，从存储器中取出（见 PPT12 页）</span></li><li><span>变址寻址</span></li><li><span>相对寻址</span></li><li><span>基址寻址</span></li></ul></li></ul></li><li><p><span>堆栈方式</span></p><ul><li><span>SP 就是一个指针，指向一块存储区域，一般指向栈顶操作数从存储器中取出</span></li></ul></li></ul></li><li><p><span>8 种方式(立即、直接、间接、寄存器间接、变址、相对、基址)</span></p></li></ul><p>&nbsp;</p><h3><a name="掌握变长操作码编码方法的基本原理" class="md-header-anchor"></a><span>掌握变长操作码编码方法的基本原理</span></h3><p>&nbsp;</p><ul><li><img src="./pocc_10.png" referrerpolicy="no-referrer" alt="pdp-11变长操作码"></li></ul><p>&nbsp;</p><h3><a name="条件码的产生条件码的应用无符号数的大小比较方法和带符号数的比较方法" class="md-header-anchor"></a><span>条件码的产生；条件码的应用：无符号数的大小比较方法和带符号数的比较方法</span></h3><ul><li><span>条件转移指令通常根据Condition Codes（条件码 CC/状态位/标志位）转移一般通过执行算术</span></li></ul><p>&nbsp;</p><p>&nbsp;</p><h3><a name="程序的机器级表示" class="md-header-anchor"></a><span>程序的机器级表示</span></h3><p>&nbsp;</p><ul><li><p><span>MIPS 指令有哪些寻址方式？有哪些特有的寻址方式？掌握 MIPS 的基本汇编指令表示</span></p><ul><li><img src="./pocc_11.png" referrerpolicy="no-referrer" alt="寻址方式"></li></ul></li><li><p><span>掌握 MIPS 计算机的 R 型、I 型和 J 型三种指令格式。</span></p><ul><li><p><span>R型指令</span></p><ul><li><p><span>OP+RS+RT+RD+SHAMT+FUNC</span></p></li><li><p><span>6+5+5+5+5+6</span></p></li><li><p><span>参与运算的操作数和结果都在寄存器，R型指令的寻址方式只有寄存器寻址一种</span></p></li><li><p><span>R型指令的OP全位0，具体功能由func部分确定</span></p></li><li><p><span>rs：第一个源操作数</span></p></li><li><p><span>rt：第二个源操作数</span></p></li><li><p><span>rd：目的寄存器</span></p></li><li><p><span>shamt：对非位移指令位00000.位移指令位位移次数</span></p></li><li><p><span>eg</span></p><ul><li><span>add rd,rs,rt</span></li><li><span>xor rd,rs,rt</span></li><li><span>jr $s2 #pc&lt;-寄存器 </span><span>$</span><span>s2提供转移</span></li></ul></li></ul></li><li><p><span>I型指令</span></p><ul><li><span>op+rs+rt+immediate</span></li><li><span>6+5+5+16</span></li><li><span>指令中包含一个立即数，它可能是一个操作数，或存储器的偏移地址</span></li><li><span>op：确定指令的功d能</span></li><li><span>rs：一个源操作数，是寄存器操作数；或者在存取指令中用来作及地址寄存器</span></li><li><span>immediate：立即数，可以是第二个源操作数，或者是偏移寻址中的偏移量</span></li><li><span>根据指令的不同，可以表示立即寻址的操作数，也可以是寄存器rs组成偏移寻址方式</span></li><li><span>addi rt,rs,imm</span></li></ul></li><li><p><span>J型指令</span></p><ul><li><span>op+address</span></li><li><span>6+26</span></li><li><span>op:确定指令的功能</span></li><li><span>address：转移地址</span></li></ul></li></ul></li><li><p><span>清楚 RR 型指令、移位指令、寄存器跳转指令三种类型指令格式的区别和特点；</span></p><ul><li><span>RR 型指令：两个操作数均在寄存器中</span></li><li><span>移位指令：SRL，SLL 移位指令是 R 型指令，但没有使用 rs 寄存器</span></li><li><span>寄存器跳转指令：JR</span></li></ul></li><li><p><span>R 型指令采用了什么寻址方式？</span></p><ul><li><span>寄存器寻址</span></li></ul></li><li><p><span>I 型指令采用了什么寻址方式？</span></p><ul><li><span>立即数寻址</span></li><li><span>偏移寻址</span></li><li><span>PC相对寻址</span></li></ul></li><li><p><span>J型指令采用了什么寻址方式？</span></p><ul><li><span>伪直接寻址</span></li></ul></li></ul><p>&nbsp;</p><h2><a name="中央处理器" class="md-header-anchor"></a><span>中央处理器</span></h2><p>&nbsp;</p><h3><a name="单周期数据通路的设计" class="md-header-anchor"></a><span>单周期数据通路的设计</span></h3><ul><li><p><span>操作元件和存储元件的概念，单周期 MIPS 计算机中有哪些操作元件和存储元件？</span></p><ul><li><p><span>组合逻辑元件的特点：其输出只取决于当前的输入。即：若输入一样，则其输出也一样；</span></p><ul><li><span>定时：所有输入到达后，经过一定的逻辑门延时，输出端改变，并保持到下次改变，不需要时钟信号来定时</span></li><li><span>状态（存储）元件的特点：具有存储功能，在时钟控制下输入被写到电路中，直到下个时钟到达；输入端状态由时钟决定何时被写入，输出端状态随时可以读出</span></li></ul></li><li><p><span>操作元件：加法器(Adder)，多路选择器 (MUX)，算术逻部件(ALU)</span></p></li><li><p><span>存储元件：D 触发器，寄存器（Register），寄存器组（Register File）</span></p></li></ul></li><li><p><span>寄存器和寄存器组、理想存储器的读过程和写过程，以及它们的区别</span></p><ul><li><p><span>理想存储器（ idealized memory ）</span></p><ul><li><span>Data Out：32 位读出数据</span></li><li><span>Data In： 32 位写入数据</span></li><li><span>Address：读写公用一个 32 位地址</span></li><li><span>读操作（组合逻辑操作）：地址 Address 有效后，经一个“取数时间AccessTime，” Data Out上数据有效</span></li><li><img src="./pocc_12.png" referrerpolicy="no-referrer" alt="理想存储器"></li><li><span>写操作（时序逻辑操作） ：写使能为1 的情况下，时钟Clk 边沿到来时，Data In 传来的值开始被写入 Address 指定的存储单元中</span></li></ul></li><li><p><span>寄存器（Register）</span></p><ul><li><span>有一个写使能（Write Enable-WE）信号</span></li><li><span>0: 时钟边沿到来时，输出不变</span></li><li><span>1: 时钟边沿到来时，输出开始变为输入</span></li><li><img src="./pocc_13.png" referrerpolicy="no-referrer" alt="reg"></li></ul></li><li><p><span>寄存器组（Register File）</span></p><ul><li><span>两个读口（组合逻辑操作）：busA 和 busB</span></li><li><span>分别由 RA 和 RB 给出地址。</span></li><li><span>地址 RA 或 RB有效后，经一个“取数时间 (AccessTime)”，</span>
<span>busA 和 busB 有效。</span></li><li><span>一个写口（时序逻辑操作）：写使能为 1 的情况下，时钟边沿到来时，busW 传来的值开始被写入 RW 指定的寄存器中</span></li></ul></li></ul></li><li><p><span>熟练掌握课件中的最基本的 7 条指令执行时数据通路中信息的流动过程，以及在取指令部件中的信息处理，包括元件的连接和所需要的各种控制信号的取值等。同时也能够在前述基本结构上扩展指定功能和格式的一些指令</span></p><ul><li><span>R 型指令：（ADD and subtract）add rd, rs, rt；sub rd, rs, rt。</span></li><li><span>I 型指令：（OR Immediate）ori rt, rs, imm16；（LOAD and STORE）lw rt, rs, imm16；sw</span></li><li><span>I 型指令：（OR Immediate）ori rt, rs, imm16；（LOAD and STORE）lw rt, rs, imm16；sw rt, rs, imm16；（BRANCH）beq rs, rt, imm16。</span></li><li><span>J 型指令：（JUMP）j targe</span></li></ul></li></ul><h3><a name="单周期控制器的设计" class="md-header-anchor"></a><span>单周期控制器的设计</span></h3><ul><li><p><span>运算器的功能是如何控制的？掌握指令译码的基本原理，OP 和 func 字段如何与指令功 能对应？明白每个控制信号与指令译码的对应关系。</span><span>	</span></p><ul><li><p><span>所有动作有专门时序信号来定时</span></p></li><li><p><span>由时序信号规定何时发出什么动作</span></p></li><li><p><span>时许信号：同步系统中用于进行同步控制的定时信号，如时钟信号</span></p></li><li><p><span>读取并执行一条指令的时间</span></p></li><li><p><span>早期计算机的三级时序系统</span></p><ul><li><span>机器周期 - 节拍 - 脉冲</span></li><li><span>指令周期可分为取指令、读操作数、执行并写结果等多个基本工作周期，称为机器周期</span></li><li><span>机器周期有取指令、存储器读、存储器写、中断响应等不同类型的机器周期</span></li></ul></li><li><p><span>每条指令的指令周期都不一样</span></p></li></ul></li><li><p><span>单周期 CPU 的周期长度是由什么指令？哪些因素决定的？</span></p><ul><li><span>最长最复杂的指令，由该指令的完整运行决定</span></li></ul></li></ul><p>&nbsp;</p><h3><a name="微程序控制原理" class="md-header-anchor"></a><span>微程序控制原理</span></h3><p>&nbsp;</p><ul><li><p><span>微程序控制器的基本思想</span></p><ul><li><p><span>比较硬连线控制器和微程序控制器的优缺点。</span></p><ul><li><p><span>硬连线</span></p><ul><li><span>优点：速度快，适合于简单或规整的指令系统，例如，MIPS指令集</span></li><li><span>缺点：它是一个多输入/多输出的巨大逻辑网络。对于复杂指令系统来说</span></li><li><span>结构庞杂，实现困难；修改、维护不易；灵活性差</span></li></ul></li><li><p><span>微程序控制器的基本思想</span></p><ul><li><span>仿照程序设计的方法，编制每条指令对应的微程序</span></li><li><span>每个微程序由若干条微指令构成，一条微指令包含若干个微命令</span></li><li><span>所有指令对应的微程序放在只读存储器中，执行某条指令就是取出对应</span></li><li><span>微程序中的各条微指令，对微指令译码产生对应的微命令(即控制信号)</span></li><li><span>这个只读存储器称为控制存储器（Control Storage），简称控存CS </span></li><li><span>微程序设计的特点：具有规整性、可维护性和灵活性，但速度慢</span></li></ul></li></ul></li></ul></li><li><p><span>指令、微程序、微指令、微命令、微操作它们之间的关系</span></p><ul><li><img src="./pocc_14.png" referrerpolicy="no-referrer" alt="树结构"></li><li><span>将指令的执行转换为微程序的执行</span></li><li><span>微程序是一个微指令序列</span></li><li><span>每条微指令是一个0/1序列，其中包含若干个微命令（即：控制信号）</span></li><li><span>微命令控制数据通路的执行</span></li></ul></li><li><p><span>微指令格式的设计</span></p><ul><li><figure><table><thead><tr><th><span>格式</span></th><th><span>基本思想</span></th><th><span>优点</span></th><th><span>缺点</span></th></tr></thead><tbody><tr><td><span>水平型微指令</span></td><td><span>相容微命令尽量多地安排在一条微指令中</span></td><td><span>微程序短，并行性高，适合于较高速度的场合</span></td><td><span>微指令长，编码空间利用率较低，并且编制困难</span></td></tr><tr><td><span>垂直型微指令</span></td><td><span>一条微指令只控制一、二个微命令</span></td><td><span>微指令短，编码效率高，格式与机器指令类似，故编制容易</span></td><td><span>微程序长，一条微指令只能控制一、二个操作，无并行，速度慢</span></td></tr></tbody></table></figure></li></ul></li></ul><p>&nbsp;</p><h3><a name="异常和中断处理" class="md-header-anchor"></a><span>异常和中断处理</span></h3><ul><li><p><span>异常和中断（外部）的区别</span></p><ul><li><p><span>程序执行过程中CPU会遇到一些特殊情况，使正在执行的程序被“中断”</span></p><ul><li><span>此时，CPU中止原来正在执行的程序，转到处理异常情况或特殊事件的程序去执行，执行后再返回到原被中止的程序处（断点）继续执行</span></li></ul></li><li><p><span>程序执行被 “中断” 的事件有两类</span></p><ul><li><p><span>内部“异常”：在CPU内部发生的意外事件或特殊事件</span></p></li><li><p><span>按发生原因分为硬故障异常和程序性异常两类</span></p><ul><li><span>硬故障异常：如电源掉电、硬件线路故障等</span></li><li><span>程序性异常：执行某条指令时发生的“例外(Exception)”，如溢出、缺页、越界、越权、非法指令、除数为0、堆栈溢出、访问超时、断点设置、单步、系统调用等</span></li></ul></li><li><p><span>外部“中断”：在CPU外部发生的特殊事件，通过向CPU发“中断请求”信号，请求CPU处理</span></p><ul><li><span>如实时时钟、控制台、打印机缺纸、外设准备好、采样计时到、DMA传输结束等</span></li><li><span>外部中断是一种I/O方式</span></li></ul></li></ul></li><li><p><span>内部“异常” 按处理方式又分为故障、自陷（swi、软中断）和终止三类</span></p><ul><li><span>故障(fault) ：执行指令引起的异常事件，如溢出、缺页、堆栈溢出、访问超时等。“断点”为发生故障指令的地址</span></li><li><span>自陷(Trap) ：预先安排的事件，如单步跟踪、系统调用(执行访管指令)等。是一种自愿中断。“断点”为发生下条指令的地址</span></li><li><span>终止(Abort) ：硬故障事件，此时机器将“终止”，调出中断服务程序来重启操作系统。“断点”是什么？ 随便！</span></li></ul></li><li><p><span>自陷处理完成后回到哪条指令执行？回到下条指令！</span></p></li><li><p><span>哪些故障补救后可继续执行，哪些只好终止当前进程？</span></p><ul><li><span>缺页、TLB缺失等：补救后可继续，回到发生故障的指令重新执行；  </span></li><li><span>溢出、除数为0、非法操作、内存保护错等：终止当前进程</span></li></ul></li></ul></li><li><p><span>识别异常事件：有软件识别和硬件识别（向量中断方式）两种不同的方式</span></p><ul><li><p><span>软件识别（MIPS采用） </span></p><ul><li><span>设置一个异常状态寄存器（MIPS中为Cause寄存器），用于记录异常原因。操作系统使用一个统一的异常处理程序，该程序按优先级顺序查询异常状态寄存器的各位，识别出异常事件</span></li><li><span>例如：MIPS中位于内核地址0x8000 0180处有一个专门的异常处理程序，用于检测异常的具体原因，然后转到内核中相应的异常处理程序段中进行具体的处理</span></li></ul></li><li><p><span>硬件识别（向量中断）（80x86采用）</span></p><ul><li><span>用专门的硬件查询电路按优先级顺序识别异常，得到“中断类型号”，根据此号，到中断向量表中读取对应的中断服务程序的入口地址</span></li></ul></li></ul></li></ul><h3><a name="背背概念" class="md-header-anchor"></a><span>背背概念</span></h3><ul><li><span>数据通路：（操作元件和存储元件通过总线方式或分散方式连接而成的进行数据存储、处理、传送的路径。）</span></li><li><span>数据通路（DataPath）：指令执行过程中，数据所经过的路径，包括路径中的部件。它是指令的执行部件。</span></li><li><span>数据通路的功能：进行数据存储、处理、传送。</span></li><li><span>数据通路由两类元件组成：组合逻辑元件（也称操作元件），时序逻辑元件（也称状态元件，存储元件）&lt;需要用到时钟&gt;。</span></li><li><span>元件间的连接方式：总线连接方式，分散连接方式。</span></li><li><span>控制器（Control）的功能：对指令进行译码，生成指令对应的控制信号，控制数据通路的动作。能对执行部件发出控制信号，是指令的控制部件。</span></li><li><span>数据通路组成：原状态元件 + 操作元件( 组合电路) + 目的状态元件</span></li></ul><p>&nbsp;</p><p>&nbsp;</p><h3><a name="存储器分层体系结构" class="md-header-anchor"></a><span>存储器分层体系结构</span></h3><p>&nbsp;</p><h3><a name="存储器概述和存储器芯片" class="md-header-anchor"></a><span>存储器概述和存储器芯片</span></h3><ul><li><p><span>. 熟悉随机存取存储器、顺序存取存储器、直接存取存储器、相联存储器、只读存储器、读写存储器、非易失（不挥发）性存储器、易失（挥发）性存储器、静态存储器、动态存储器这些名称的含义。这些类型的存储器在计算机的层次结构存储系统中</span></p></li><li><p><span>按工作性质/存取方式分类</span></p><ul><li><p><span>随机存取存储器(RAM) ：每个单元读写时间一样，且与各单元所在位置无关。如：内存</span></p><ul><li><span>注：原意主要强调地址译码时间相同。现在的 DRAM 芯片采用行缓冲，因而可能因为位置不同而使访问时间有所差别。）</span></li></ul></li><li><p><span>顺序存取存储器(SAM)：数据按顺序从存储载体的始端读出或写入，因而存取时间的长短与信息所在位置有关。例如：磁带。</span></p></li><li><p><span>直接存取存储器(DAM)：直接定位到读写数据块，在读写数据块时按顺序进行。如磁盘。相联存储器（AM/CAM)：按内容检索到存储位置进行读写。例如：快表。</span></p></li></ul></li><li><p><span>按信息的可更改性分类:</span></p><ul><li><span>读写存储器（Read / Write Memory)：可读可写</span></li><li><span>只读存储器（Read Only Memory)：只能读不能写。</span></li></ul></li><li><p><span>按断电后信息的可保存性分类：</span></p><ul><li><span>非易失（不挥发）性存储器(Nonvolatile Memory) 信息可一直保留， 不需电源维持。（如 ：ROM、磁表面存储器、光存储器等）</span></li><li><span>易失（挥发）性存储器(Volatile Memory) 电源关闭时信息自动丢失。（如：RAM、Cache）</span></li></ul></li><li><p><span>按功能/容量/速度/所在位置分类</span></p><ul><li><span>寄存器器(Register)封装在 CPU 内，用于存放当前正在执行的指令和使用的数据；用触发器实现，速度快，容量小（几~几十个）。</span></li><li><span>高速缓存(Cache)位于 CPU 内部或附近，用来存放当前要执行的局部程序段和数据；用SRAM 实现，速度可与 CPU 匹配，容量小（几 MB）。</span></li><li><span>内存储器 MM（主存储器 Main (Primary) Memory）位于 CPU 之外，用来存放已被启动的程序及所用的数据；用 DRAM 实现，速度较快，容量较大（几 GB）。</span></li><li><span>外存储器 AM (辅助存储器 Auxiliary / Secondary Storage)位于主机之外，用来存放暂不运行的程序、数据或存档文件；用磁表面或光存储器实现，容量大而速度慢。</span></li></ul></li><li><p><span>.层次结构存储系统中的寄存器、高速缓存、内存(主存)、外存它们所在的位置、工作速度、存储容量、成本等的相对大小和大致的数量级。</span></p><ul><li><p><span>寄存器(Register)</span></p><ul><li><span>封装在CPU内，用于存放当前正在执行的指令和使用的数据</span></li><li><span>用触发器实现，速度快，容量小（几~几十个）</span></li></ul></li><li><p><span>高速缓存(Cache)</span></p><ul><li><span>位于CPU内部或附近，用来存放当前要执行的局部程序段和数据</span></li><li><span>用SRAM实现，速度可与CPU匹配，容量小（几MB）</span></li></ul></li><li><p><span>内存储器（主存储器Main /Primary Memory）MM</span></p><ul><li><span>内存储器（主存储器Main /Primary Memory）MM</span></li><li><span>位于CPU之外，用来存放已被启动的程序及所用的数据</span></li><li><span>用DRAM实现，速度较快，容量较大（几GB）</span></li></ul></li><li><p><span>外存储器AM (辅助存储器Auxiliary / Secondary  Storage)</span></p><ul><li><span>位于主机之外，用来存放暂不运行的程序、数据或存档文件</span></li><li><span>用磁表面或光存储器实现，容量大而速度慢</span></li></ul></li></ul></li><li><p><span>这些存储器和前述各类存储器之间的对应关系</span></p><ul><li><figure><table><thead><tr><th><span>外存储器（简称外存或辅存）</span></th><th><span>内存储器（简称内存或主存）</span></th></tr></thead><tbody><tr><td><span>存取速度慢</span></td><td><span>存取速度快</span></td></tr><tr><td><span>成本低、容量很大</span></td><td><span>成本高、容量相对较小</span></td></tr><tr><td><span>不与CPU直接连接，先传送到内存，然后才能被CPU使用</span></td><td><span>直接与CPU连接，CPU对内存可直接进行读、写操作</span></td></tr><tr><td><span>属于非易失性存储器，用于长久存放系统中几乎所有的信息</span></td><td><span>属于易失性存储器(volatile)，用于临时存放正在运行的程序和数据</span></td></tr></tbody></table></figure></li><li><p><img src="./pocc_15.png" referrerpolicy="no-referrer" alt="内外存关系"></p></li></ul></li><li><p><span>静态存储器和动态存储器的基本工作机制；</span></p><ul><li><p><span>静态存储器SRAM</span></p><ul><li><span>用作Cache</span></li><li><span>每个存储单元(cell)由6个晶体管组成</span></li><li><span>只要加上电源，信息就能一直保持</span></li><li><span>对电器干扰相对不很敏感</span></li><li><span>比DRAM更快，也更贵</span></li><li><span>SRAM中数据保存在双稳态触发器中，只要供电，数据就一直保持，不是破环性读出，也无需重写，也无需刷新</span></li><li><span>每步操作都在系统时钟控制下进行</span></li><li><span>有确定的等待时间（读命令开始到数据线有效的时间）CL，例如 CL=2 clks</span></li><li><span>利用总线时钟上升沿与下降沿同步传送</span></li><li><span>多体(缓冲器)交叉存取</span></li></ul></li><li><p><span>动态存储器DRAM</span></p><ul><li><span>用作主存储器</span></li><li><span>每个存储单元由1个电容和1个晶体管组成</span></li><li><span>每隔一段时间必须刷新一次</span></li><li><span>对电器干扰比较敏感</span></li><li><span>比SRAM慢，但便宜</span></li><li><span>优点：电路元件少，功耗小，集成度高，用于构建主存储器</span></li><li><span>缺点：速度慢，破坏性读出（需再生电路），需定时刷新</span></li><li><span>DRAM核心结构由多个内存单元组成，这些内存单元分成由行和列组成的二维阵列，访问内存单元需要两步。先寻址某个行的地址，然后在杭州寻址特定列的地址</span></li></ul></li></ul></li><li><p><span>动态存储器刷新的概念，按行刷新的含义。</span></p><ul><li><span>原因：动态存储器依靠栅极电容上的电荷来存储信息,无电源供电，通常只能维持几十个毫秒左右(常为64ms)，为使电容上保存的信息不丢失，需定期向电容补充电荷</span></li><li><span>刷新方法：因DRAM在读操作时都需再生，故刷新即为读操作。刷新按行进行，所有芯片中的同一行同时刷新</span></li><li><span>刷新的时候只需要控制行选信号，而无视列选信号，每当行选信号选中后，存储器一行单元全部被刷新</span></li></ul></li><li><p><span>最大刷新周期的确定的依据是什么。</span></p><ul><li><span>刷新周期：从上次对整个存储器刷新结束到下次对整个存储器全部刷新一遍为止的时间间隔，也就是对某个特定行进行刷新的时间间隔</span></li><li><span>刷新周期取电容上数据有效保存时间的上限，一般为10ms～100ms，目前多数情况下是64ms。</span></li></ul></li><li><p><span>DRAM 的集中刷新、分散刷新和异步刷新的刷新操作与正常访存分别是如何安排的？</span></p><ul><li><p><span>集中刷新</span><span>	</span></p><ul><li><span>在刷新周期内集中安排所有行的刷新。</span></li><li><img src="./pocc_16.png" referrerpolicy="no-referrer" alt="集中刷新"></li></ul></li><li><p><span>分散刷新</span></p><ul><li><span>各行的刷新分散安排在每个存取周期中</span></li><li><img src="./pocc_17.png" referrerpolicy="no-referrer" alt="分散刷新"></li></ul></li><li><p><span>异步刷新</span></p><ul><li><span>所有行刷新分散安排在1个刷新周期内,每隔一段时间刷新一行</span></li><li><img src="./pocc_17.png" referrerpolicy="no-referrer" alt="集中刷新"></li></ul></li></ul></li><li><p><span>了解 SDRAM 芯片中的突发传输方式</span></p><ul><li><span>一个时钟周期中连续传送多个数据（突发传输方式），可以是1,2,4,8个,它们分别对应SDRAM、DDR SDRAM、DDR2 SDRAM和DDR3 SDRAM</span></li></ul></li></ul><p>&nbsp;</p><h3><a name="存储器容量的扩展及其与-cpu-的连接" class="md-header-anchor"></a><span>存储器容量的扩展及其与 CPU 的连接</span></h3><p>&nbsp;</p><ul><li><p><span>. 位扩展、字扩展、字位扩展方式，系统存储容量的计算，芯片数的计算，这几种扩展方式下的芯片(组)与片选信号的地址线分配，各芯片(组)的地址范围的计算、划分。片选信号用地址信号表示的逻辑表达式</span></p><ul><li><p><span>存储器容量的扩展可以有以下三种情况</span></p><ul><li><p><span>字扩展（位数不变，扩充容量）</span></p></li><li><p><span>用16K×8位芯片扩成64K×8位存储器需几个芯片？地址范围各为什么？</span></p><ul><li><p><span>字方向扩展4倍，需4个芯片</span></p></li><li><p><span>每个芯片16K=214，即有14位地址。64K=216，故地址共需16位。16位地址范围分别为：</span></p><ul><li><span>0000-3FFFH， 4000-7FFFH， 8000-BFFFH， C000- FFFFH</span></li></ul></li><li><p><span>16位地址的高两位由外部译码器译码生成4个输出，分别连到4个芯片的片选信号端</span></p></li><li><p><span>地址的低14位连到各芯片作为片内地址</span></p></li><li><p><span>地址线、读/写控制线等对应相接，片选信号连译码输出</span></p></li></ul></li><li><p><span>位扩展（字数不变，位数扩展）</span></p><ul><li><p><span>用4K×1位芯片构成4K×8位存储器需几个芯片？地址范围各是多少？</span></p><ul><li><span>位方向扩展8倍，字方向无需扩展</span></li><li><span>需要8个芯片，地址范围都一样：000-FFFH， 地址共12位，全部作为片内地址</span></li><li><span>芯片的地址线及读/写控制线对应相接，而数据线单独引出 </span></li></ul></li></ul></li><li><p><span>字位同时扩展（字和位同时扩展）</span></p><ul><li><span>16K×4位芯片构成64K×8位存储器需几个芯片，地址范围各是多少？</span></li><li><span>字方向4倍、位方向2倍，8个芯片</span></li><li><span>各芯片地址范围：0000-3FFFH， 4000-7FFFH， 8000-BFFFH， C000- FFFFH</span></li></ul></li></ul></li><li><p><span>存储器芯片的扩展例子</span></p><ul><li><span>用1K×4的芯片组成容量为4K×8的存储器。系统地址总线A15～A0（低）,双向数据总线D7～D0（低）,读/写信号线R/W。给出芯片内部地址分配与片选逻辑,并画出存储器框图。</span></li><li><img src="./pocc_19.png" referrerpolicy="no-referrer" alt="1"></li><li><img src="./pocc_20.png" referrerpolicy="no-referrer" alt="2"></li><li><img src="./pocc_21.png" referrerpolicy="no-referrer" alt="3"></li><li><img src="./pocc_22.png" referrerpolicy="no-referrer" alt="4"></li></ul></li></ul></li></ul><p>&nbsp;</p><h3><a name="高速缓冲存储器cache" class="md-header-anchor"></a><span>高速缓冲存储器(cache)</span></h3><ul><li><p><span>直接映射、全相联映射、组相联映射三种方式映射关系；</span></p><ul><li><p><span>什么是Cache的映射功能？</span></p><ul><li><span>把访问的局部主存区域（块）取到Cache中时，该放到Cache的何处</span></li><li><span>Cache行比主存块少，故存在多个主存块映射到同一个Cache行</span></li></ul></li><li><p><span>如何进行映射？</span></p><ul><li><span>把主存空间划分成若干个大小相等的主存块（Block）</span></li><li><span>Cache中存放一个主存块的对应单位称为槽（Slot）或行（line）有书中也称之为块（Block），有书称之为页（page）（不妥！）</span></li></ul></li><li><p><span>主存块与Cache行大小相等</span></p></li><li><p><span>主存块和Cache行可以有以下三种映射方式：</span></p><ul><li><span>直接映射：每个主存块映射到Cache的固定行</span></li><li><span>全相联映射：每个主存块映射可以到Cache的任一行</span></li><li><span>组相联映射：每个主存块映射到Cache固定组中任一行</span></li></ul></li></ul></li><li><p><span>三种方式下的主存地址与 cache的行、内容之间的对应关系；</span></p><ul><li><p><span>最简单的Cache----直接映射 Cache</span></p><ul><li><p><span>把主存的每一块映射到一个固定的Cache行（槽）</span></p></li><li><p><span>也称模映射(Module Mapping)</span></p></li><li><p><span>映射关系为：</span></p><ul><li><p><span>Cache行号=主存块号 mod Cache</span></p></li><li><p><span>行数块和行都从0开始编号</span></p></li><li><p><span>例如，设Cache有16行，则主存第100号数据块</span></p><ul><li><span>100 mod 16=4</span></li><li><span>故该数据块映射到Cache的第4行中</span></li></ul></li><li><p><span>将主存按Cache的数据容量大小划分为多个群，群的编号从0开始</span></p></li><li><p><span>每个群中的各个数据块就分别映射到固定的Cache行</span></p></li><li><p><span>主存块号就划分为主存群号和Cache行号两个部分</span></p></li></ul></li></ul></li></ul></li><li><p><span>直接映射Cache的特点</span></p><ul><li><p><span>实现简单，命中检测时间短</span></p></li><li><p><span>无需考虑淘汰（替换）问题</span></p></li><li><p><span>但不够灵活，Cache存储空间得不到充分利用，命中率低</span></p><ul><li><span>例如，对于16行的Cache，若要将主存第0块与第16块同时复制到Cache中。由于它们都只能复制到Cache第0行，即使Cache其它行空闲，也有一个主存块不能写入Cache。这样就会产生频繁的 Cache装入</span></li></ul></li></ul></li><li><p><span>全相联映射</span></p><ul><li><p><span>按内容访问，是相联存取方式！</span></p></li><li><p><span>每个主存块可装到Cache任一行中</span></p></li><li><p><span>为何地址中没有cache索引字段？</span></p></li><li><p><span>因为可映射到任意一个cache行中！</span></p></li><li><p><span>如何实现按内容访问？</span></p></li><li><p><span>直接比较！</span></p></li><li><p><span>由于没有Cache索引，就不能定位到行，需同时比较所有Cache行的标志。</span></p></li><li><p><span>没有冲突缺失，因为只要有空闲Cache行，都不会发生冲突</span></p></li><li><p><span>例如: 32位主存地址, 32B/块. 比较器位数多长</span></p><ul><li><span>因为32B=25 B，故块内地址需要5位</span></li><li><span>比较器的位数=32-5=27   就是主存块号</span></li></ul></li><li><p><span>问题：需要多少个比较器？</span></p><ul><li><span>每行一个比较器！</span></li></ul></li></ul></li><li><p><span>组相联映射（Set Associative）</span></p><ul><li><p><span>组相联映射是直接映射和全相联映射两者的结合</span></p></li><li><p><span>将Cache所有行分组(2K)，每个主存块只能映射到Cache的一个固定组，但可选该组中的任一行。即：组间是直接映射，组内是全映射。</span></p></li><li><p><span>映射关系为： Cache组号=主存块号 mod Cache组数</span></p></li><li><p><span>例如：假定Cache的划分为：8K字=8组x2行/组x512字/行</span></p><ul><li><span>主存第100块: 100 mod 8=4</span></li><li><span>故 映射到Cache的第4组的任意行中</span></li></ul></li><li><p><span>每组的行数称为路， 该例的映射称为2路组相联映射</span></p></li><li><p><span>组相联映射的特点：</span></p><ul><li><span>结合了直接映射和全相联映射的优点。当Cache组数为1时，就是全相联映射；当每组只有一行时，就是直接映射。</span></li><li><span>每组2或4行（称为2路或4路组相联）较常用。通常每组4行以上很少用。在较大容量的L2 Cahce和L3 Cahce中才使用4路以上映射。</span></li></ul></li></ul></li><li><p><span>cache 容量的计算方法，注意区分数据区、标记、有效位。</span></p><ul><li><p><span>直接映射：</span></p><ol start='' ><li><span>通过题目条件得到cache数据总容量</span></li><li><span>通过题目条件得到主存容量</span></li><li><span>用主存容量/cache数据区总容量得到群数量</span></li><li><span>用群数量得到其表达的地址位数</span></li><li><span>行数量*（1+群地址位数+块数据位数）=cache总容量（bit）</span></li><li><span>不要忘记单位转换；1B=1byte=8bit</span></li></ol></li><li><p><span>全相连</span></p><ol start='' ><li><span>将主存容量转换成块数</span></li><li><span>把计算表示块数地地址</span></li><li><span>得到高x位就是标记，块号</span></li><li><span>低n-x位就是块内地址</span></li></ol></li><li><p><span>组相连映射</span></p><ol start='' ><li><span>将主存容量分为块</span></li><li><span>再根据块数分为组群得到表示地址</span></li><li><span>按k路将cache分为行号/k组，得到组表示地址</span></li><li><span>高x位为组群地址表示，中间为y位组号表示，低n-x-y位为块地址</span></li></ol></li></ul></li></ul><p>&nbsp;</p><h3><a name="背背概念-n1475" class="md-header-anchor"></a><span>背背概念</span></h3><ul><li><span>记忆单元 （存储基元 / 存储元 / 位元）（Cell）具有两种稳态的能够表示二进制数码 0 和1 的物理器件。</span></li><li><span>存储单元 / 编址单位（Addressing Unit）具有相同地址的位构成一个存储单元，也称为一个编址单位</span></li><li><span>存储体/ 存储矩阵 / 存储阵列（Bank）所有存储单元构成一个存储阵列</span></li><li><span>编址方式（Addressing Mode）字节编址、按字编址</span></li><li><span>存储器地址寄存器（Memory Address Register - MAR）用于存放主存单元地址的寄存器</span></li><li><span>存储器数据寄存器（ Memory Data Register-MDR (或 MBR) ）用于存放主存单元中的数据的寄存器</span></li></ul><p>&nbsp;</p><p>&nbsp;</p><h2><a name="互连及输入输出组织" class="md-header-anchor"></a><span>互连及输入输出组织</span></h2><p>&nbsp;</p><p>&nbsp;</p><h3><a name="io-系统及-io-设备" class="md-header-anchor"></a><span>I/O 系统及 I/O 设备</span></h3><ul><li><p><span>I/O 系统性能指标：吞吐率（I/O 带宽）和响应时间的定义</span></p><ul><li><span>吞吐率（I/O 带宽）：单位时间内从系统输入/输出多少数据（实现了多少次输入/输出操作）</span></li><li><span>响应时间（等待延迟）：在多长时间内完成请求的任务</span></li></ul></li><li><p><span>外设的通用模型（抽象模型）以及各部分的作用</span></p><ul><li><p><span>外设的分类</span></p><ul><li><p><span>按照信息传输方向来分：</span></p><ul><li><span>输入设备：从外部向计算机输入信息，如：键盘、鼠标、扫描仪等</span></li><li><span>输出设备：从计算机向外部输出信息，如：打印机、显示器等</span></li><li><span>输入输出设备：即可输入又可输出，如：带触屏地显示器、磁盘存储器等</span></li></ul></li><li><p><span>按功能区分：</span></p><ul><li><p><span>人-机交互设备</span></p><ul><li><span>输入/输出地信息是人可读地，或可操作地</span></li><li><span>如：键盘、鼠标、扫描仪、打印机、显示器等</span></li></ul></li><li><p><span>外部存储设备（大部分为成块传送设备）</span></p><ul><li><span>用于信息的存储（其输入/出的信息是机器可读的）</span></li><li><span>如：磁盘、磁带、光盘等</span></li></ul></li><li><p><span>机-机通信设备</span></p><ul><li><span>主要用于计算机和计算机之间的通信</span></li><li><span>如：网卡、调制解调器、A/D、D/A等</span></li></ul></li></ul></li></ul></li></ul></li><li><p><span>磁盘上数据定位（地址）：磁道号、磁头号、扇区号；磁盘数据的存取以块（扇区）为单位。</span></p><ul><li><span>磁盘操作包括：寻道操作、旋转等待操作和读写操作</span></li><li><span>磁道：磁盘表面被分为许多同心圆，每个同心圆称为一个磁道。每个磁道都有一个编号，最外面的是 0 磁道</span></li><li><span>扇区：每个磁道被划分为若干段（叫扇区），每个扇区的存储容量为512 字节。每个扇区都有一个编号</span></li></ul></li><li><p><span>低密度磁盘：各个磁道上的扇区数相同，每个磁道存储的数据量相同，内磁道的位密度比外磁道高；</span></p></li><li><p><span>高密度磁盘：各个磁道上的位密度相同，各磁道存储的数据量不同，外磁道上的扇区数比内磁道多。高密度磁盘比低密度磁盘容量高很多</span></p></li><li><p><span>磁盘容量：未格式化容量和格式化容量，它们的计算方法。</span></p><ul><li><p><span>未格式化容量：指按道密度和位密度计算出的容量，包括间歇、ID域、数据域等信息。</span></p><ul><li><p><span>对于低密度存储方式，每个磁道容量相等，容量计算位：</span></p><ul><li><span>磁盘总容量=记录面数（正反）</span><span>*</span><span>柱面数（磁道数）</span><span>*</span><span>内圆周长</span><span>*</span><span>位密度</span></li></ul></li></ul></li><li><p><span>格式化容量：格式化后的磁盘容量只包含数据区，即能存储数据信息的容量。</span></p><ul><li><p><span>对于低密度存储方式，若按每扇区512字节计算，则容量计算：</span></p><ul><li><span>磁盘数据容量=2*盘片数</span><span>*</span><span>磁道数/每面</span><span>*</span><span>扇区数/磁道</span><span>*</span><span>512/扇区</span></li></ul></li></ul></li></ul></li><li><p><span>硬盘的主要技术指标：平均存取时间 T 及其计算</span></p><ul><li><span>T = 平均寻道时间 + 平均旋转等待时间 + 数据传输时间</span></li><li><img src="./pocc_23.png" referrerpolicy="no-referrer" alt="磁盘响应时间"></li></ul></li><li><p><span>冗余磁盘阵列 RAID 的基本思想；</span></p><ul><li><p><span>RAID 的 3 个特性</span></p><ul><li><span>RAID是一组物理磁盘驱动器，在操作系统下被视为一个高容量的但逻辑驱动器</span></li><li><span>数据连续或交叉地分布在一组物理磁盘上，高数据传输率</span></li><li><span>冗余磁盘用于存储校验信息，保证磁盘万一损坏时能恢复数据</span></li></ul></li><li><p><span>RAID分级</span></p><ul><li><span>目前已知地RAID方案分为8级（0-7），以及RAID10（0级和1级）\RAID30\RAID50</span></li></ul></li><li><p><span>RAID 不同级别的含义：表示具有上述 3 个特性的不同设计结构</span></p><ul><li><span>级别不是简单地层次关系，而是表示具有上述3个特性地不同设计结构</span></li></ul></li></ul></li></ul><p>&nbsp;</p><h3><a name="总线及系统互连io-接口" class="md-header-anchor"></a><span>总线及系统互连、I/O 接口</span></h3><ul><li><p><span>总线的定义；理解系统总线、通信总线、处理器总线(前端总线 FSB，快速通道互连总线 QPI)、存储总线、I/O 总线、总线宽度、总线带宽、总线工作频率等概念。FSB、QPI 和 PCI-Express xn 总线的特点，带宽计算方法</span></p><ul><li><p><span>总线宽度：总线中数据线的条数，决定了每次能同时传输的信息位数</span></p></li><li><p><span>总线工作频率</span></p><ul><li><span>早期的总线通常一个时钟周期传送一次数据，工作频率等于总线时钟频率</span></li><li><span>现在有些总线一个时钟周期可以传送2次或4次数据，因此，工作频率是时钟频率的2倍或4倍</span></li></ul></li><li><p><span>总线带宽</span></p><ul><li><p><span>总线的最大数据传输率</span></p></li><li><p><span>对于同步总线，总线带宽计算公式：B=W</span><span>*</span><span>F/N</span></p><ul><li><span>W-总线宽度；F-总线时钟频率；N-完成一次数据传送所用时钟周期数</span></li><li><span>F/N实际上就是总线工作频率</span></li></ul></li></ul></li><li><p><span>总线传送方式</span></p><ul><li><span>非突发传送：每个总线十五都传送地址，一个地址对应一次数据传送</span></li><li><span>突发传送：即成块数据传送。突发传送总线事务中，先传送一个地址，后传送多次数据，后续数据的地址默认为前面地址自动增量</span></li></ul></li></ul></li><li><p><span>FSB:</span></p><ul><li><span>并行传输、同步定时方式</span></li></ul></li><li><p><span>处理器总线：快速通道互联总线QPI</span></p></li></ul><p>&nbsp;</p><ul><li><p><span>IO接口的五大功能</span></p><ul><li><span>数据缓冲：提供数据缓冲寄存器，以达到主机和外设工作熟读的匹配</span></li><li><span>错误和状态检测：提供状态寄存器，以保存各种错误或状态信息供CPU查用</span></li><li><span>控制和定时：提供控制和定时逻辑，以接受从系统总线来的控制定时信号</span></li><li><span>数据格式转换：提供数据格式转换不见，使通过外部接口得到的数据转换为内部接口需要的格式，或在相反方向进行数据格式转换。</span></li><li><span>与主机和设备通信：上述功能通过I/O接口与主机之间、I/O接口与设备之间的通信来完成</span></li></ul></li><li><p><span>I/O 端口的两种编址方式：独立编址方式和统一编址方式的含义和特点。</span></p><ul><li><span>独立编程：IO映射编址</span></li><li><span>统一编制：内存映射编址</span></li></ul></li></ul><p>&nbsp;</p><h3><a name="io-数据传送控制方式" class="md-header-anchor"></a><span>I/O 数据传送控制方式</span></h3><ul><li><p><span>程序直接(查询)控制方式(轮询方式)、程序中断(I/O)方式和（直接存储器访问方式）DMA 方式的各自工作过程、特点，以及性能比较分析</span></p><ul><li><p><span>程序控制 I/O 处理</span></p><ul><li><img src="./pocc_24.png" referrerpolicy="no-referrer" alt="轮询"></li></ul></li><li><p><span>中断I/O方式</span></p><ul><li><img src="./pocc_25.png" referrerpolicy="no-referrer" alt="中断"></li></ul></li><li><p><span>DMA</span></p><ul><li><span>该方式用专门的 DMA 接口硬件来控制外设与主存间的直接数据交换，数据不通过 CPU</span></li><li><span>CPU----DMA----高速设备 DMA 优先级高</span></li></ul></li></ul></li><li><p><span>中断响应的结果就是调出相应的中断服务程序 （处在“禁止中断”状态）</span></p></li><li><p><span>中断处理是指执行相应中断服务程序的过程</span></p></li><li><p><span>中断响应的过程</span></p><ul><li><span>关中断</span></li><li><span>保护断点和程序状态</span></li><li><span>识别中断源</span></li></ul></li><li><p><span>中断处理的过程；</span></p><ul><li><span>中断响应+中断处理</span></li></ul></li><li><p><img src="./pocc_26.png" referrerpolicy="no-referrer" alt="中断过程"></p></li><li><p><span>单重中断和多重中断的差别及如何实现</span></p><ul><li><span>单重中断:不允许在中断处理时被新的中断打断，因而直到中断返回前才会开中断。单重中断系统无需设置中断屏蔽字。</span></li><li><span>多重中断的概念：在一个中断处理（执行中断服务程序）过程中，若有新的中断请求发生，且新中断优先级高于正在执行的中断，则中止正在执行的中断服务程序，转去处理新的中断。这种情况为多重中断，也称中断嵌套</span></li><li><span>差别：一个允许被打断、一个不允许被打断；一个无屏蔽字，一个有屏蔽字</span></li></ul></li><li><p><span>中断响应优先级和中断处理优先级的概念；</span></p><ul><li><p><span>如何通过中断屏蔽字来调整中断处理优先级。</span></p><ul><li><p><span>中断优先级的概念：包含中断响应优先级和中断处理优先级</span></p><ul><li><span>中断响应优先级----由查询程序或硬联排队线路决定的优先权，反映多个中断同时请求时选择哪个响应。</span></li><li><span>中断处理优先级----当某个中断正在被处理过程中，有别的中断源的请求发生了，这时就由各中断源的中断处理优先级决定如何响应。它由正在处理的中断的中断屏蔽字来动态设定，这样可以改变各中断源原来的中断优先级顺序（中断响应优先级），反映本中断与其它中断之间的处理顺序关系</span></li></ul></li></ul></li></ul></li><li><p><span>DMA方式</span></p><ul><li><p><span>DMA 常用的三种方式：CPU 停止法、周期挪用法、交替分时访问法及其优缺点。</span></p><ul><li><p><span>CPU停止法</span></p><ul><li><span>优点：控制简单、使用于传输速率很高的外设实现成组数据传送</span></li><li><span>缺点：CPU工作受影响。主存周期没有被充分利用</span></li></ul></li><li><p><span>周期挪用法</span></p><ul><li><span>挪用一个存储周期进行外设和主存交换一个数据。（DMA 传输时，CPU 让出一个总线事务周期，由 DMA 控制器控制总线来访问主存，传送完一个数据后立即释放总线）</span></li></ul></li><li><p><span>交替分时访问法</span></p><ul><li><span>优点：既能即使响应IO请求，又能较好地发挥CPU和主存地效率。IO设备在准备下一数据期间，主存周期被CPU充分利用。因此适合于IO设备地读写周期大于主存周期地情况</span></li><li><span>缺点：每次DMA访存都要申请总线控制权、使用后释放总线，因此，会增加一些传输开销</span></li><li><span>将每个存储周期分成两个时间片，一个给cpu，一个给dma，这样在每个存储周期内，cpu和dma都可以访问存储器</span></li></ul></li></ul></li></ul></li><li><p><span>DMA 控制器的功能；DMA 操作的三个步骤</span></p><ul><li><span>DMA 控制器的预置（初始化）----软件实现</span></li><li><span>DMA 数据传送------硬件实现</span></li><li><span>DMA 结束处理------软件实现</span></li><li><img src="./pocc_27.png" referrerpolicy="no-referrer" alt="功能"></li></ul></li></ul><p>&nbsp;</p></div>
</body>
</html>